home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / door / twview93.zip / DECOUNT.INC < prev    next >
Text File  |  1992-03-11  |  2KB  |  77 lines

  1. procedure DeadEndAnalysis;
  2.  
  3. var 
  4.   len, maxlen : integer;
  5.   distrib     : array [1..8] of integer;
  6.   s           : sector;
  7.   fname       : string;
  8.   f           : text;
  9.   distances   : distanceArray;
  10.  
  11. procedure CheckBackDoor( var f : text; base : sector );
  12. { verify no back doors into path }
  13. var
  14.   previous, current, NextUp : sector;
  15. begin
  16.   write(f, 'Tunnel starting at ', base, ' : ');
  17.   previous := base;
  18.   write( f, base );
  19.   if AppearanceCount( base ) = space.sectors[base].number then
  20.     write(f, ' ok ')
  21.   else
  22.     write(f, ' back door ');
  23.   current := space.sectors[base].data[1];
  24.   while (space.sectors[current].number = 2) do
  25.     begin
  26.       write( f, current );
  27.       if AppearanceCount( current ) = space.sectors[current].number then
  28.         write(f, ' ok ')
  29.       else
  30.         write(f, ' back door ');
  31.       NextUp := space.sectors[current].data[1];
  32.       if NextUp = previous then
  33.         NextUp := space.sectors[current].data[2];
  34.       previous := current;
  35.       current := nextUp;
  36.     end; {while}
  37. end; {Check Back Door}
  38.  
  39. begin
  40.   for len := 1 to 8 do
  41.     distrib[ len ] := 0;
  42.   maxlen := 0;
  43.   for s := 1 to MaxSector do
  44.     if space.sectors[s].number = 1 then
  45.       begin
  46.         len := howfar( s );
  47.         if len > maxlen then
  48.           maxlen := len;
  49.         distrib[ len ] := distrib[ len ] + 1;
  50.       end; {for if}
  51.   writeln('Distributions of tunnel lengths:');
  52.   for len := 1 to 8 do
  53.     write( len : 2, ': ', distrib[len] : 3, '.  ');
  54.   writeln;
  55.   writeln;
  56.   writeln('Maximum length of any tunnel is ', maxlen);
  57.   writeln;
  58.   TwoWayDistances( 1, distances, false, true );
  59.   writeln;
  60.   write('File for storage of results?  (hit return for screen)  ');
  61.   readln( fname );
  62.   assign( f, fname );
  63.   rewrite( f );
  64.   repeat
  65.     write('Which lengths do you want to check for 1-way entrances? (0 to exit) ');
  66.     readln( len );
  67.     if len > 0 then
  68.       for s := 1 to MaxSector do
  69.         if space.sectors[s].number = 1 then
  70.           if howfar(s) = len then
  71.             begin
  72.               checkBackDoor( f, s );
  73.               writeln( f, ' at distance ', distances[s].d, ' from terra.' );
  74.             end;
  75.   until len = 0;
  76.   close(f);
  77. end; {dead end stuff}